///////////////////////////////////////////////////////////////////////
//	File	:	"CMenuEngine.h"
//
//	Author	:	James Gonzalez (JG)
//
//	Purpose	:	This class will load and display the screens for the game
///////////////////////////////////////////////////////////////////////
#pragma once

#include <Windows.h>
#include <vector>

class CSGD_TextureManager;

enum MemberID { XPOS, YPOS, MENUID};

class CMenuEngine
{
private:
	
	CSGD_TextureManager * m_pTM;
	struct tObjects
	{
		int m_nX;
		int m_nY;
		int m_nImage;
		char m_szName[128];
		tObjects()
		{
			sprintf_s(m_szName,"%s","NONE");
			m_nImage = -1;
			m_nX = 0;
			m_nY = 0;
		}
	};

	struct tMenuItems 
	{
		
		int m_nX;
		int m_nY;
		char m_szName[128];
		int m_nID;

		tMenuItems()
		{
			sprintf_s(m_szName,"%s","NONE");
			m_nX = 0;
			m_nY = 0;
			m_nID = -1;
		}
	};
	struct tPositions 
	{
		int m_nX;
		int m_nY;
		char m_szName[128];
		tPositions()
		{
			sprintf_s(m_szName,"%s","NONE");
			m_nX = 0;
			m_nY = 0;
		}
	};



	std::vector<tObjects> m_vAllObjects;
	std::vector<tMenuItems> m_vAllMenuItmes;
	std::vector<tPositions> m_vAllPositions;
	int m_nObjectCount;
	int m_nMenuItemCount;
	int m_nPositionCount;

	
public:
	


	//////////////////////////////////////////////////////////////////////////
	//	Function: "CMenuEngine"
	//	Last Modified: August 24,2008
	//  Purpose: Constructor
	//////////////////////////////////////////////////////////////////////////
	CMenuEngine(void);	
	//////////////////////////////////////////////////////////////////////////
	//	Function: "~CMenuEngine"
	//	Last Modified: August 24,2008
	//  Purpose: Destructor
	//////////////////////////////////////////////////////////////////////////
	~CMenuEngine(void);
	
	//////////////////////////////////////////////////////////////////////////
	//	Function:	"LoadMenu"
	//	Last Modified: August 24,2008
	//	Purpose:	Loads the screen from XML
	//////////////////////////////////////////////////////////////////////////
	bool LoadScreen(const char*szFileName);


	//////////////////////////////////////////////////////////////////////////
	//	Function:	"RenderScreen:
	//	Last Modified: August 24,2008
	//	Purpose:	Renders the screen 
	//////////////////////////////////////////////////////////////////////////
	void RenderScreen();

	//////////////////////////////////////////////////////////////////////////
	//	Function: "GetMenuMembers"
	//	Last Modified: August 25,2008
	//	Purpose: Get Menu members
	//////////////////////////////////////////////////////////////////////////
	int GetMenuMembers(char * szMenuName, int nMember);

	//////////////////////////////////////////////////////////////////////////
	//	Function: "GetObjectMembers"
	//	Last Modified: August 25,2008
	//	Purpose: Get Object members
	//////////////////////////////////////////////////////////////////////////
	int GetObjectMembers(char * szPosObjName, int nMember);

	//////////////////////////////////////////////////////////////////////////
	//	Function: "GetPosObjMembers"
	//	Last Modified: August 25,2008
	//	Purpose: Get Position members
	//////////////////////////////////////////////////////////////////////////
	int GetPosObjMembers(char * szPosObjName, int nMember);

	//////////////////////////////////////////////////////////////////////////
	//	Function: "ExitScreen"
	//	Last Modified: August 25,2008
	//	Purpose: Clears all vectors
	//////////////////////////////////////////////////////////////////////////
	void ExitScreen();

	//////////////////////////////////////////////////////////////////////////
	//	Function: "Accessors"
	//	Last Modified: August 25,2008
	//	Purpose: Get Data
	//////////////////////////////////////////////////////////////////////////
	int GetObjectCount() { return (int)m_vAllObjects.size();}
	int GetMenuCount() { return (int)m_vAllMenuItmes.size();}
	int GetPositionCount() { return (int)m_vAllPositions.size();}


};